"""
功能: 首页页面对象类:属性/方法
实现逻辑:
1. 创建一个页面对象类:HomePage
    1.1 定义类属性:
        页面元素的定位方式
    1.2 定义实例方法:
        页面元素的操作方法
"""
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from PO.basePage import BasePage


# 1. 创建一个页面对象类:HomePage
class HomePage(BasePage):
    # # ================================================================
    # # 创建一个init绑定driver
    # def __init__(self, d):
    #     self.driver = d
    #
    # # 封装显示等待(单个元素的)
    # def by_findelement(self, *item):
    #     try:
    #         # 等待某个元素出现,最长等待10秒,每0.5秒检查一次,渲染完成则继续下一步操作
    #         element = WebDriverWait(self.driver, 10).until(EC.presence_of_element_located(item))
    #     except Exception as msg:
    #         print(f"页面元素:{item}定位失败,提示:{msg}")
    #         raise
    #     else:
    #         return element
    #
    # # 封装显示等待(多个元素的)
    # def by_findelements(self, *item):
    #     try:
    #         # 等待某个元素出现,最长等待10秒,每0.5秒检查一次,渲染完成则继续下一步操作
    #         element = WebDriverWait(self.driver, 10).until(EC.presence_of_all_elements_located(item))
    #     except Exception as msg:
    #         print(f"页面元素:{item}定位失败,提示:{msg}")
    #         raise
    #     else:
    #         return element

    # 1.1 定义类属性:
    # ============================================================
    # # 页面元素的定位方式
    # 定位第一个页面搜索框
    search_cell1 = (By.ID, "com.ss.android.article.news:id/bpb")
    # 定位第二个页面的输入框
    search_cell2 = (By.ID, "com.ss.android.article.news:id/w3")
    # 定位第二个页面的搜索按钮
    search_btn = (By.ID, "com.ss.android.article.news:id/w0")

    # -------------------------------------------------------------
    # # 1.2 定义实例方法:
    # # 页面元素的操作方法
    # def clickSearchcell1(self):
    #     """点击第一个页面的搜索框"""
    #     self.driver.find_element(*self.search_cell1).click()
    # def getSearchCell2(self):
    #     """获取子页面输入框内的文本信息"""
    #     return self.driver.find_element(*self.search_cell2).text
    #
    # def inputSearchCell2(self, testdata):
    #     """找到新页面的输入框,输入要搜索的关键字"""
    #     self.driver.find_element(*self.search_cell2).send_keys(testdata)
    # def clickSearchBtn(self):
    #     """点击搜索按进行搜索"""
    #     self.driver.find_element(*self.search_btn).click()
    # ---------------------------------------------------------------
    # 单独封装了显示等待
    # 1.2 定义实例方法:
    # 页面元素的操作方法
    def clickSearchcell1(self):
        """点击第一个页面的搜索框"""
        self.by_findelement(*self.search_cell1).click()

    def getSearchCell2(self):
        """获取子页面输入框内的文本信息"""
        return self.by_findelement(*self.search_cell2).text

    def inputSearchCell2(self, testdata):
        """找到新页面的输入框,输入要搜索的关键字"""
        self.by_findelement(*self.search_cell2).send_keys(testdata)

    def clickSearchBtn(self):
        """点击搜索按进行搜索"""
        self.by_findelement(*self.search_btn).click()


if __name__ == '__main__':
    from common.driver import Driver
    import time

    d = Driver()
    driver = d.startUp()
    hp = HomePage(driver)
    hp.clickSearchcell1()
    time.sleep(3)
    print(hp.getSearchCell2())
    hp.inputSearchCell2("叙利亚")
    time.sleep(3)
    hp.clickSearchBtn()
    time.sleep(3)
    driver.quit()
